const express = require('express')
const router = express.Router()
const md5 = require('blueimp-md5')    //第三方 md5加密模块
const sd = require('silly-datetime')    //获取时间的第三方包

const User = require('./models/users')
const Topic = require('./models/topic')

router.get('/', (req, res) => {
  res.sendFile(__dirname + '/views/index.html')
})

router.get('/logreg', (req, res) => {   
  res.sendFile(__dirname + '/views/loginPage.html')
})

router.get('/topic', (req, res) => {
  res.sendFile(__dirname + '/views/topic.html')
})

router.get('/getUser', (req, res) => {  //给首页vue文件传session数据
  res.send(req.session.user)
})

router.get('/getTopic', (req, res) => {   //首页获取留言数据
  Topic.find((err, topicList) => {    //查找数据库中的留言
    if (err) {
      return res.status(500).send(false)
    }
    res.send(topicList)     //将查找到的内容发给前端
  })
})

router.get('/logout', (req, res) => {   //注销登录状态
  req.session.user = null
  res.redirect('/')
})

router.post('/login', (req, res) => {   //处理登录请求
  let body = req.body
  User.findOne({              //查询是否有匹配的用户名和密码
    username: body.username,
    password: md5(md5(body.password))
  }, (err, user) => {
    if (err) {
      return res.status(500).send(false)
    }

    if (user) {
      req.session.user = user   //登录成功，通过session记录用户登录状态
      return res.status(200).json({
        err_code: 0,
        message: '登录成功'
      })
    } else {
      return res.status(200).json({
        err_code: 1,
        message: '用户名或密码错误'
      })
    }
  })
})

router.post('/register', (req, res) => {  //处理注册请求
  let body = req.body
  User.findOne({
    //$or[]判断两个条件中有一个满足条件即执行
    username: body.username
  }, (err, data) => {
    if (err) {
      return res.status(500).send('server error')
    }
    if (data) {
      return res.status(200).json({
        err_code: 1,
        message: '用户名已存在'
      })
    } else {
      body.password = md5(md5(body.password))
      new User(body).save((err, user) => {
        if (err) {
          return res.status(500).send(false)
        }
        //注册成功，把注册的用户信息放进session，以便记录登录状态
        req.session.user = user

        res.status(200).json({
          err_code: 0,
          message: 'ojbk'
        })
      })
    }
  })

})

router.post('/topic', (req, res) => {   //把留言信息存进数据库
  let body = req.body
  //记录发表留言的用户名
  body.username = req.session.user.username
  //记录发表留言的时间
  body.datetime = sd.format(new Date(), 'YYYY-MM-DD HH:mm')
  //存储留言信息
  new Topic(body).save((err, user) => {
    if (err) {
      return res.status(500).send(false)
    }
    // res.status(200).json({
    //   err_code: 0,
    //   message: '发表成功'
    // })
    res.redirect('/')
  })
})

router.post('/del', (req, res) => {   //处理删除请求
  Topic.findByIdAndRemove(req.body.id, (err) => {
    if (err) {
      res.status(500).send(false)
    }
    res.status(200).send(true)
  })
})

{// router.post('/register', async (req, res) => {
//   var body = req.body
//   try{
//     if (await User.findOne({ username: body.username })) {
//       return res.status(200).json({
//         err_code: 1,
//         message: '用户名已存在'
//       })
//     }
    
//     body.password = md5(md5(body.password))   //对用户密码进行加密
//     await new User(body).save()     //保存用户信息到数据库

//     res.status(200).json({
//       err_code: 0,
//       message: 'ojbk'
//     })

//   } catch(err){
//     res.status(500).json({
//       err_code: 500,
//       message: err.message
//     })
//   }
// })
}


module.exports = router